#if !defined(_APP_BUFFER_H_)
#define _APP_BUFFER_H_

/**
 * 小缓冲qu
 */
typedef struct
{
    char *ptr;      // 指针
    int total_size; // 总大小
    int len;        // 当前长度

} SubBUffer;

/**
 * 大缓冲区
 * (1)两个小缓冲区的数组
 */
typedef struct
{
    SubBUffer *sub_buffers[2];
    int read_index;
    int write_index;
} Buffer;

//初始化缓冲区
//参数：@param 其中一份缓冲区的大小，实际的大小是total_size*2
Buffer *app_buffer_init(int total_size);

//向缓冲区写入数据
int app_buffer_write(Buffer *buffer, char *writedata, int writelen);

//从缓冲区读取数据
/**
 * @param read_buff 读取缓冲区 2.写入的目标空间(已分配空间的) 3.可读取的数据大小
 * @return 返回实际读取的数据大小
 */
int app_buffer_read(Buffer *buffer, char *read_buff, int read_buffer_size);

/**
 * 释放缓冲区
 */
void app_buffer_free(Buffer *buffer);
#endif